package com.demo.gulimall.seckill.entity;

import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import java.io.Serializable;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

/**
 * 优惠券信息
 *
 * @author Chen Yuan
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@TableName("sms_coupon")
public class Coupon implements Serializable {
	/** id */
	@TableId(type = IdType.ID_WORKER) // 老版本
    //@TableId(type = IdType.ASSIGN_ID) // 新版本
	@JsonSerialize(using = ToStringSerializer.class)
	@TableField(value = "`id`")
	private Long id;

	/** 优惠卷类型[0->全场赠券；1->会员赠券；2->购物赠券；3->注册赠券] */
	@TableField(value = "`coupon_type`")
	private Byte couponType;

	/** 优惠券图片 */
	@TableField(value = "`coupon_img`")
	private String couponImg;

	/** 优惠卷名字 */
	@TableField(value = "`coupon_name`")
	private String couponName;

	/** 数量 */
	@TableField(value = "`num`")
	private Integer num;

	/** 金额 */
	@TableField(value = "`amount`")
	private BigDecimal amount;

	/** 每人限领张数 */
	@TableField(value = "`per_limit`")
	private Integer perLimit;

	/** 使用门槛 */
	@TableField(value = "`min_point`")
	private BigDecimal minPoint;

	/** 开始时间 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="Asia/Shanghai")
	@TableField(value = "`start_time`")
	private Date startTime;

	/** 结束时间 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="Asia/Shanghai")
	@TableField(value = "`end_time`")
	private Date endTime;

	/** 使用类型[0->全场通用；1->指定分类；2->指定商品] */
	@TableField(value = "`use_type`")
	private Byte useType;

	/** 备注 */
	@TableField(value = "`note`")
	private String note;

	/** 发行数量 */
	@TableField(value = "`publish_count`")
	private Integer publishCount;

	/** 已使用数量 */
	@TableField(value = "`use_count`")
	private Integer useCount;

	/** 领取数量 */
	@TableField(value = "`receive_count`")
	private Integer receiveCount;

	/** 可以领取的开始日期 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="Asia/Shanghai")
	@TableField(value = "`enable_start_time`")
	private Date enableStartTime;

	/** 可以领取的结束日期 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="Asia/Shanghai")
	@TableField(value = "`enable_end_time`")
	private Date enableEndTime;

	/** 优惠码 */
	@TableField(value = "`code`")
	private String code;

	/** 可以领取的会员等级[0->不限等级，其他-对应等级] */
	@TableField(value = "`member_level`")
	private Byte memberLevel;

	/** 发布状态[0-未发布，1-已发布] */
	@TableField(value = "`publish`")
	private Byte publish;

}
